{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Matplotlib 基础\n",
    "\n",
    "数据可视化非常重要，因为错误或不充分的数据表示方法可能会毁掉原本很出色的数据分析工作。\n",
    "\n",
    "[matplotlib](https://matplotlib.org) 库是专门用于开发2D图表（包括3D图表）的，突出优点：\n",
    "\n",
    "-   使用起来极为简单\n",
    "-   以渐进、交互式方式实现数据可视化\n",
    "-   表达式和文本使用LaTeX排版\n",
    "-   对图像元素控制力强\n",
    "-   可输出PNG、PDF、SVG和EPS等多种格式"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 安装\n",
    "```sh\n",
    "conda install matplotlib\n",
    "```\n",
    "\n",
    "或者\n",
    "\n",
    "```sh\n",
    "pip install matplotlib\n",
    "```"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## matplotlib 架构\n",
    "matplotlib 的主要任务之一，就是提供一套表示和操作图形对象（主要对象）以及它的内部对象的函数和工具。其不仅可以处理图形，还提供事件处理工具，具有为图形添加动画效果的能力。有了这些附加功能，matplotlib 就能生成以键盘按键或鼠标移动触发的事件的交互式图表。\n",
    "\n",
    "从逻辑上来讲，matplotlib 的整体架构为3层，各层之间单向通信：\n",
    "\n",
    "-   Scripting （脚本）层\n",
    "-   Artist （表现）层\n",
    "-   Backend （后端）层\n",
    "\n",
    "**matplotlib 3层架构**\n",
    "\n",
    "![img](matplotlib-architecture.png)\n",
    "\n",
    "### Backend 层\n",
    "\n",
    "matplotlib API 即位于该层，这些 API 是用来在底层实现图形元素的一个个类。\n",
    "\n",
    "-   FigureCanvas 对象实现了绘图区域这一概念。\n",
    "-   Renderer 对象在 FigureCanvas 上绘图。\n",
    "-   Event 对象处理用户输入（键盘和鼠标事件）。\n",
    "\n",
    "使用 matplotlib 有很多种展示图形的方法。可以使用 IPython ，在命令行界面下，输入绘图命令，弹出绘图窗口，这是交互式展示形式；在 Jupyter QtConsole 窗口以行内形式显示图像；使用 Jupyter Notebook 绘制行内图形，实现高效数据分析；将 matplotlib 内嵌到 GUI 里构建应用程序等。\n",
    "\n",
    "后端主要有两种类型：一种是交互式后端，主要有 Qt 、TkInter 、GTK 等；另一种是非交互式后端，主要包括 PNG 、SVG 、PDF 和 PS 等。\n",
    "\n",
    "关于后端的介绍可参考[官方文档](https://matplotlib.org/3.2.1/tutorials/introductory/usage.html#the-builtin-backends)。\n",
    "\n",
    "\n",
    "### Artist 层\n",
    "\n",
    "图形中所有能看到的元素都属于 Artist 对象，即标题、轴标签、刻度等组成图形的所有元素都是 Artist 对象的实例。\n",
    "\n",
    "Artist 类分为两种：原始（primitive）和复合（composite）。\n",
    "\n",
    "绘制 Line2D 或矩形、圆形等几何图形，甚至文本等图形时，形成图形表示的基础元素由 primitive artist 单个对象组成。\n",
    "\n",
    "由多个基础元素——primitive artist——组成的图表中的图像元素叫做 composite artist，例如 Axis（单条轴）、Ticks（刻度）、Axes（轴）和 Figure（图形）。\n",
    "\n",
    "**matplotlib 图表组成元素**\n",
    "\n",
    "![img](matplotlib_anatomy.png)\n",
    "\n",
    "\n",
    "### Scripting层（pyplot）\n",
    "\n",
    "Scripting 层对于数据分析和可视化最合适，该层包含 pyplot 接口。\n",
    "\n",
    "两种接口方式：\n",
    "\n",
    "-   显示地创建图表和轴等对象，通过对象调用方法（面向对象方式）\n",
    "-   依靠 pyplot 自动地创建和管理图表和轴等对象，使用 pyplot 函数绘图\n",
    "\n",
    "面向对象方式示例："
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-06-04T09:29:49.983223Z",
     "start_time": "2020-06-04T09:29:49.575382Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.legend.Legend at 0x2011b5585c8>"
      ]
     },
     "execution_count": 4,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "import matplotlib.pyplot as plt\n",
    "import numpy as np\n",
    "\n",
    "x = np.linspace(0, 2, 100)\n",
    "\n",
    "fig, ax = plt.subplots()\n",
    "ax.plot(x, x, label='linear')\n",
    "ax.plot(x, x**2, label='quadratic')\n",
    "ax.plot(x, x**3, label='cubic')\n",
    "ax.set_xlabel('x label')\n",
    "ax.set_ylabel('y label')\n",
    "ax.set_title(\"Simple Plot\")\n",
    "ax.legend()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "pyplot 方式示例："
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-06-04T09:03:27.234162Z",
     "start_time": "2020-06-04T09:03:26.800075Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.legend.Legend at 0x2011b46ba48>"
      ]
     },
     "execution_count": 2,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "x = np.linspace(0, 2, 100)\n",
    "\n",
    "plt.plot(x, x, label='linear')\n",
    "plt.plot(x, x**2, label='quadratic')\n",
    "plt.plot(x, x**3, label='cubic')\n",
    "plt.xlabel('x label')\n",
    "plt.ylabel('y label')\n",
    "plt.title(\"Simple Plot\")\n",
    "plt.legend()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## pyplot\n",
    "\n",
    "由一组命令式函数组成，通过 pyplot 函数操作或改动 Figure 对象，例如创建 Figure 对象和绘图区域、表示一条线或为图形添加标签等。\n",
    "\n",
    "pyplot 还具有状态性特性，它能跟踪当前图形和绘图区域的状态。调用函数时，函数只对当前图形起作用。\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 简单交互式图表"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "plt.plot([1, 2, 3, 4])  # Line2D 对象"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-06-04T09:28:21.598800Z",
     "start_time": "2020-06-04T09:28:21.333988Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[<matplotlib.lines.Line2D at 0x2011b4ed488>]"
      ]
     },
     "execution_count": 3,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.plot([1,2,3,4], [1,4,9,16], 'ro') # red circles\n",
    "plt.axis([0,5,0,20])  # 定义轴的取值范围 [xmin, xmax, ymin, ymax]\n",
    "plt.title('My first plot')\n",
    "plt.plot([1,2,3,4], [1,4,9,16], 'ro')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 格式化字符串\n",
    "\n",
    "格式化字符串包含 color 、marker 和 line 三部分：\n",
    "\n",
    "```python\n",
    "fmt = '[marker][line][color]'\n",
    "```\n",
    "\n",
    "每一个部分都是可选的。\n",
    "\n",
    "**Markers**\n",
    "\n",
    "| 字符       | 描述                   |\n",
    "|------------|------------------------|\n",
    "| `'.'`      | point marker           |\n",
    "| `','`      | pixel marker           |\n",
    "| `'o'`      | circle marker          |\n",
    "| `'v'`      | triangle\\_down marker  |\n",
    "| `'^'`      | triangle\\_up marker    |\n",
    "| `'<'`      | triangle\\_left marker  |\n",
    "| `'>'`      | triangle\\_right marker |\n",
    "| `'1'`      | tri\\_down marker       |\n",
    "| `'2'`      | tri\\_up marker         |\n",
    "| `'3'`      | tri\\_left marker       |\n",
    "| `'4'`      | tri\\_right marker      |\n",
    "| `'s'`      | square marker          |\n",
    "| `'p'`      | pentagon marker        |\n",
    "| `'*'`      | star marker            |\n",
    "| `'h'`      | hexagon1 marker        |\n",
    "| `'H'`      | hexagon2 marker        |\n",
    "| `'+'`      | plus marker            |\n",
    "| `'x'`      | x marker               |\n",
    "| `'D'`      | diamond marker         |\n",
    "| `'d'`      | thin\\_diamond marker   |\n",
    "| `'&vert;'` | vline marker           |\n",
    "| `'_'`      | hline marker           |\n",
    "\n",
    "**Line 风格**\n",
    "\n",
    "| 字符   | 描述                |\n",
    "|--------|---------------------|\n",
    "| `'-'`  | solid line style    |\n",
    "| `'--'` | dashed line style   |\n",
    "| `'-.'` | dash-dot line style |\n",
    "| `':'`  | dotted line style   |\n",
    "\n",
    "**Color**\n",
    "\n",
    "| 字符  | 颜色    |\n",
    "|-------|---------|\n",
    "| `'b'` | blue    |\n",
    "| `'g'` | green   |\n",
    "| `'r'` | red     |\n",
    "| `'c'` | cyan    |\n",
    "| `'m'` | magenta |\n",
    "| `'y'` | yellow  |\n",
    "| `'k'` | black   |\n",
    "| `'w'` | white   |"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 使用 NumPy\n",
    "\n",
    "可以直接把 NumPy 数组作为输入数据。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-06-04T09:30:55.474734Z",
     "start_time": "2020-06-04T09:30:55.058675Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[<matplotlib.lines.Line2D at 0x2011b5eaf48>,\n",
       " <matplotlib.lines.Line2D at 0x2011b5f2f88>,\n",
       " <matplotlib.lines.Line2D at 0x2011b5fa908>]"
      ]
     },
     "execution_count": 5,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "import math\n",
    "import numpy as np\n",
    "\n",
    "t = np.arange(0, 2.5, 0.1)\n",
    "y1 = list(map(math.sin, math.pi * t))\n",
    "y2 = list(map(math.sin, math.pi * t + math.pi / 2))\n",
    "y3 = list(map(math.sin, math.pi * t - math.pi / 2))\n",
    "\n",
    "plt.plot(t, y1, 'b*',\n",
    "         t, y2, 'g^',\n",
    "         t, y3, 'ys')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "plt.plot(t, y1, 'b--',\n",
    "         t, y2, 'g',\n",
    "         t, y3, 'r-.')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 使用 `kwargs`\n",
    "\n",
    "组成图表的各个对象由很多用以描述它们特点的属性。这些属性均有默认值，但可以用关键字参数设置。\n",
    "\n",
    "在 matplotlib 库各个函数的参考文档中，每个函数的最后一个参数总是<code>kwargs</code>。例如：\n",
    "\n",
    "```\n",
    "matplotlib.pyplot.plot(*args, **kwargs)\n",
    "```\n",
    "\n",
    "下面的例子，设置 linewidth 关键字参数，改变线条的粗细。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "plt.plot([1,2,4,2,1,0,1,2,1,4], linewidth=2.0)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 处理多个Figure和Axes对象\n",
    "\n",
    "用 matplotlib 同时管理多个图形，而在每个图形中，又可以绘制几个不同的子图。\n",
    "\n",
    "使用 pyplot 时，必须时刻注意当前 Figure 对象和当前 Axes 对象的概念（即 Figure 对象中当前所显示的图形）。\n",
    "\n",
    "<code>subplot()</code>函数不仅可以将图形分为不同的绘图区域，还能激活特定子图，以便用命令控制它。其用参数设置分区模式和当前子图。只有当前子图受到命令的影响。\n",
    "\n",
    "下面的示例绘制两种正弦趋势图（正弦和余弦），将画布划分为上下两个向水平方向延伸的子图。\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-06-04T09:31:04.289579Z",
     "start_time": "2020-06-04T09:31:03.853892Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[<matplotlib.lines.Line2D at 0x2011b65ff08>]"
      ]
     },
     "execution_count": 6,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 2 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "t = np.arange(0, 5, 0.1)\n",
    "y1 = np.cos(2 * np.pi * t)\n",
    "y2 = np.sin(2 * np.pi * t)\n",
    "plt.subplot(211)\n",
    "plt.plot(t, y1, 'b-.')\n",
    "plt.subplot(212)\n",
    "plt.plot(t, y2, 'r--')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "将图形分为左右两个子图。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-06-04T09:42:25.158750Z",
     "start_time": "2020-06-04T09:42:24.685917Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[<matplotlib.lines.Line2D at 0x2011b72e508>]"
      ]
     },
     "execution_count": 8,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 2 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "t = np.arange(0., 1., 0.05)\n",
    "y1 = np.sin(2 * np.pi * t)\n",
    "y2 = np.cos(2 * np.pi * t)\n",
    "plt.subplot(121)\n",
    "plt.plot(t, y1, 'b-.')\n",
    "plt.subplot(122)\n",
    "plt.plot(t, y2, 'r--')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 为图表添加更多元素\n",
    "\n",
    "#### 文本\n",
    "\n",
    "-   使用<code>title()</code>函数添加标题\n",
    "-   <code>xlabel()</code>和<code>ylabel()</code>用于添加轴标签，将要显示的文本以字符串形式传入\n",
    "\n",
    "<code>text()</code>函数支持在图表任意位置添加文本：<code>text(x,y,s, fontdict=None, **kwargs)</code>。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-06-04T09:42:15.569119Z",
     "start_time": "2020-06-04T09:42:14.606467Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[<matplotlib.lines.Line2D at 0x2011b719e48>]"
      ]
     },
     "execution_count": 7,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.axis([0,5,0,20])\n",
    "plt.title('My first plot', fontsize=20, fontname='Times New Roman')\n",
    "plt.xlabel('Counting', color='gray')\n",
    "plt.ylabel('Square values', color='gray')\n",
    "plt.text(1, 1.5,'First')\n",
    "plt.text(2, 4.5,'Second')\n",
    "plt.text(3, 9.5,'Third')\n",
    "plt.text(4, 16.5,'Fourth')\n",
    "plt.text(1.1, 12, r'$y = x^2$', fontsize=20, fontname='DejaVu Sans',\n",
    "         bbox={'facecolor': 'yellow', 'alpha': 0.2})\n",
    "plt.plot([1,2,3,4], [1,4,9,16], 'ro')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### 网格\n",
    "添加网格能更好地理解图表每个数据点的位置。\n",
    "\n",
    "直接在代码中加入<code>grid()</code>函数，传入参数<code>True</code>。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "plt.axis([0, 5, 0, 20])\n",
    "plt.title('My first plot', fontsize=20, fontname='Times New Roman')\n",
    "plt.xlabel('Counting', color='gray')\n",
    "plt.ylabel('Square values', color='gray')\n",
    "plt.text(1, 1.5,'First')\n",
    "plt.text(2, 4.5,'Second')\n",
    "plt.text(3, 9.5,'Third')\n",
    "plt.text(4, 16.5,'Fourth')\n",
    "plt.text(1.1, 12, r'$y = x^2$', fontsize=20,\n",
    "         bbox={'facecolor': 'yellow', 'alpha': 0.2})\n",
    "plt.grid(True)\n",
    "plt.plot([1,2,3,4], [1,4,9,16], 'ro')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### 图例\n",
    "使用<code>legend()</code>函数将图例和字符串类型的图例说明添加到图表中。\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-06-04T09:58:38.045926Z",
     "start_time": "2020-06-04T09:58:37.571553Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.legend.Legend at 0x2011bae7f88>"
      ]
     },
     "execution_count": 12,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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8803jBgxgieeeILc3FymTZvGmDFjuPvu6NaW1atX88ILLwBRwtqouLiYiRMn0rNnT2bPns3w4cOZMWMG48aN47nnnmPPPfdk9erV29wWItJ4KWGkWrZs68oTStclVd3JJ59MmzZtADjssMMYP348ZWVlnHbaafTs2bPWbfv06cPIkSO5+uqrGTp0KN/97neZPXs2CxYs4NhjjwWgoqKCzp07V25z5plnbraf8vJyXn75ZU4//fTKsq+++gqAgQMHcuGFF3LGGWdw2mmnJfviItKkKGGk6tYt6oZKV55hO+20U+Xnc845h0MOOYSnn36a4447jjvvvJO99967xm332Wcf5s6dyzPPPMM111zDkCFDGDJkCL169eKVV9I/Kyj1eBtt2LCBjh07pk1uEydOZPbs2Tz99NMUFBQwb948OnXqtA3fVEQaK41hpBo/Htq23bSsbduovB4tWbKEvffemyuuuIKTTz6ZN954g/bt27NmzZq09VesWEHbtm0599xzGTlyJK+//jo9e/Zk1apVlQnjm2++YeHChbUed+edd6ZHjx489NBDQHQX9/z584FobOOQQw5h3Lhx7Lbbbixfvry2XYlIE6SEkaqoCCZNgu7dwSx6nzRpu6+S2lrTpk2jd+/eFBQU8M4773D++efTqVMnBg4cSO/evTcb9H7zzTcrB8nHjx/PtddeS8uWLXn44Ye5+uqr6devHwUFBbz88stbPPaUKVO466676NevH7169eKJJ6LJhEeNGkWfPn3o3bs3gwYNol+/fhn57iLScNXbI1rrQ7oHKL399tvst99+WYooe+prLqmNGmo760E5VdQWVdQWVcxsrrtvfo1/GjrDEBGRRJQwREQkkWaRMJpSt1tDpPYVaR6afMJo3bo1n376qX6pZcjG52G0bt0626GISIY1+fswunbtSllZGatWrcp2KPVq3bp19fZLfOMT90SkactYwjCzu4GhwMfu3jsumwbkx1U6AqvdvSDNtqXAGqACWJ90BD+dHXfcsVk+Ca6kpIQDDjgg22GISBOSyTOMycBtQOW82e5eOR+Fmd0CfFbL9ke6+ycZi05ERLZKxhKGu79oZnnp1ln0iLYzgKMydXwREalb2Rr0/i7wkbsvrmG9A8+b2VwzK67HuEREpAbZGvQ+G5hay/qB7r7CzL4FTDezd9z9xXQV44RSDJCbm0tJ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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.axis([0,5,0,20])\n",
    "plt.title('My first plot', fontsize=20, fontname='Times New Roman')\n",
    "plt.xlabel('Counting', color='gray')\n",
    "plt.ylabel('Square values', color='gray')\n",
    "plt.text(1,1.5,'First')\n",
    "plt.text(2,4.5,'Second')\n",
    "plt.text(3,9.5,'Third')\n",
    "plt.text(4,16.5,'Fourth')\n",
    "plt.text(1.1,12,r'$y = x^2$', fontsize=20,\n",
    "         bbox={'facecolor': 'yellow', 'alpha': 0.2})\n",
    "plt.grid(True)\n",
    "plt.plot([1,2,3,4],[1,4,9,16],'ro')\n",
    "plt.legend(['First series'], loc=2)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "**`loc` 参数可选设置**\n",
    "\n",
    "| 位置字符串     | 位置编号 | 位置表述     |\n",
    "|----------------|----------|--------------|\n",
    "| 'best'         | 0        | 最佳位置     |\n",
    "| 'upper right'  | 1        | 右上角       |\n",
    "| 'upper left'   | 2        | 左上角       |\n",
    "| 'lower left'   | 3        | 左下角       |\n",
    "| 'lower right'  | 4        | 右下角       |\n",
    "| 'right'        | 5        | 右侧         |\n",
    "| 'center left'  | 6        | 左侧垂直居中 |\n",
    "| 'center right' | 7        | 右侧垂直居中 |\n",
    "| 'lower center' | 8        | 下方水平居中 |\n",
    "| 'upper center' | 9        | 上方水平居中 |\n",
    "| 'center'       | 10       | 正中间       |\n",
    "\n",
    "注：5 和 7 表示的位置相同。"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "多个序列："
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "plt.axis([0,5,0,20])\n",
    "plt.title('My first plot', fontsize=20, fontname='Times New Roman')\n",
    "plt.xlabel('Counting', color='gray')\n",
    "plt.ylabel('Square values', color='gray')\n",
    "plt.text(1,1.5,'First')\n",
    "plt.text(2,4.5,'Second')\n",
    "plt.text(3,9.5,'Third')\n",
    "plt.text(4,16.5,'Fourth')\n",
    "plt.text(1.1,12,r'$y = x^2$', fontsize=20,\n",
    "         bbox={'facecolor': 'yellow', 'alpha': 0.2})\n",
    "plt.grid(True)\n",
    "plt.plot([1,2,3,4],[1,4,9,16],'ro')\n",
    "plt.plot([1,2,3,4],[0.8,3.5,8,15],'g^')\n",
    "plt.plot([1,2,3,4],[0.5,2.5,4,12],'b*')\n",
    "plt.legend(['First series', 'Second series', 'Third series'], loc=2)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 保存图表为图片\n",
    "使用<code>plt.savefig()</code>保存图表为图片，此函数接受一个字符串参数作为文件名。\n",
    "\n",
    "注意：保存成图像的命令之前不要使用<code>plt.show()</code>，否则将得到空白图像。"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 处理日期值"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-06-04T09:58:31.685596Z",
     "start_time": "2020-06-04T09:58:30.739693Z"
    }
   },
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "import datetime\n",
    "import numpy as np\n",
    "import matplotlib.pyplot as plt\n",
    "import matplotlib.dates as mdates\n",
    "\n",
    "months = mdates.MonthLocator()\n",
    "days = mdates.DayLocator()\n",
    "timefmt = mdates.DateFormatter('%Y-%m')\n",
    "events = [\n",
    "    datetime.date(2015,1,23),\n",
    "    datetime.date(2015,1,28),\n",
    "    datetime.date(2015,2,3),\n",
    "    datetime.date(2015,2,21),\n",
    "    datetime.date(2015,3,15),\n",
    "    datetime.date(2015,3,24),\n",
    "    datetime.date(2015,4,8),\n",
    "    datetime.date(2015,4,24)\n",
    "]\n",
    "readings = [12,22,25,20,18,15,17,14]\n",
    "fig, ax = plt.subplots()\n",
    "plt.plot(events, readings)\n",
    "ax.xaxis.set_major_locator(months)\n",
    "ax.xaxis.set_major_formatter(timefmt)\n",
    "ax.xaxis.set_minor_locator(days)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 线性图\n",
    "绘制由数学函数生成的数据点，例如：\n",
    "\n",
    "\\begin{equation}\n",
    "y = \\frac{\\sin(3 * x)}{x}  \\nonumber\n",
    "\\end{equation}\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "import matplotlib.pyplot as plt\n",
    "import numpy as np\n",
    "x = np.arange(-2 * np.pi, 2 * np.pi, 0.01)\n",
    "y = np.sin(3 * x) / x\n",
    "plt.plot(x, y)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 显示一组函数的图像\n",
    "\n",
    "\\begin{equation}\n",
    "y = \\frac{\\sin(n* x)}{x}   \\nonumber\n",
    "\\end{equation}"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "x = np.arange(-2 * np.pi, 2 * np.pi, 0.01)\n",
    "y = np.sin(3 * x) / x\n",
    "y2 = np.sin(2 * x) / x\n",
    "y3 = np.sin(4 * x) / x\n",
    "plt.plot(x, y)\n",
    "plt.plot(x, y2)\n",
    "plt.plot(x, y3)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "matplotlib 会自动为每条线分配一种不同的颜色。\n",
    "通过<code>plot()</code>函数的第三个参数指定线型、颜色，把这些设置所用的字符编码放到同一个字符串即可。\n",
    "\n",
    "还可以使用两个单独的关键字参数，用<code>color</code>指定颜色，用<code>linestyle</code>指定线型。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "x = np.arange(-2 * np.pi, 2 * np.pi, 0.01)\n",
    "y = np.sin(3 * x) / x\n",
    "y2 = np.sin(2 * x) / x\n",
    "y3 = np.sin(4 * x) / x\n",
    "plt.plot(x, y, 'k--', linewidth=3)\n",
    "plt.plot(x, y2, 'c-.')\n",
    "plt.plot(x, y3, color='#87a3cc', linestyle='--')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 轴标签及刻度\n",
    "\n",
    "使用<code>xticks()</code>和<code>yticks()</code>函数替换轴标签，分别为每个函数传入两列数值。第一个列表存储刻度的位置，第二个列表存储刻度的标签。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "x = np.arange(-2 * np.pi, 2 * np.pi, 0.01)\n",
    "y = np.sin(3 * x) / x\n",
    "y2 = np.sin(2 * x) / x\n",
    "y3 = np.sin(x) / x\n",
    "plt.plot(x, y, 'b')\n",
    "plt.plot(x, y2, 'r')\n",
    "plt.plot(x, y3, 'g')\n",
    "plt.xticks([-2 * np.pi, -np.pi, 0, np.pi, 2 * np.pi],\n",
    "           [r'$-2\\pi$', r'$-\\pi$', r'$0$', r'$+\\pi$', r'$+2\\pi$'])\n",
    "plt.yticks([-1., 0, +1, +2, +3],\n",
    "           [r'$-1$', r'$0$', r'$+1$', r'$+2$', r'$+3$'])"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 笛卡尔坐标轴"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "x = np.arange(-2 * np.pi, 2 * np.pi, 0.01)\n",
    "y = np.sin(3 * x) / x\n",
    "y2 = np.sin(2 * x) / x\n",
    "y3 = np.sin(x) / x\n",
    "plt.plot(x, y, 'b')\n",
    "plt.plot(x, y2, 'r')\n",
    "plt.plot(x, y3, 'g')\n",
    "plt.xticks([-2 * np.pi, -np.pi, 0, np.pi, 2 * np.pi],\n",
    "           [r'$-2\\pi$', r'$-\\pi$', r'$0$', r'$+\\pi$', r'$+2\\pi$'])\n",
    "plt.yticks([-1., 0, +1, +2, +3],\n",
    "           [r'$-1$', r'$0$', r'$+1$', r'$+2$', r'$+3$'])\n",
    "ax = plt.gca()\n",
    "ax.spines['right'].set_color('none')\n",
    "ax.spines['top'].set_color('none')\n",
    "ax.xaxis.set_ticks_position('bottom')\n",
    "ax.spines['bottom'].set_position(('data', 0))\n",
    "ax.yaxis.set_ticks_position('left')\n",
    "ax.spines['left'].set_position(('data', 0))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 用注释和箭头标明曲线上某一数据点的位置\n",
    "\n",
    "<code>annotate()</code>函数适合用于添加注释。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "x = np.arange(-2 * np.pi, 2 * np.pi, 0.01)\n",
    "y = np.sin(3 * x) / x\n",
    "y2 = np.sin(2 * x) / x\n",
    "y3 = np.sin(x) / x\n",
    "plt.plot(x, y, 'b')\n",
    "plt.plot(x, y2, 'r')\n",
    "plt.plot(x, y3, 'g')\n",
    "plt.xticks([-2 * np.pi, -np.pi, 0, np.pi, 2 * np.pi],\n",
    "           [r'$-2\\pi$', r'$-\\pi$', r'$0$', r'$+\\pi$', r'$+2\\pi$'])\n",
    "plt.yticks([-1., 0, +1, +2, +3],\n",
    "           [r'$-1$', r'$0$', r'$+1$', r'$+2$', r'$+3$'])\n",
    "plt.annotate(r'$\\lim_{x\\to 0}\\frac{\\sin(x)}{x} = 1$', xy=[0,1],\n",
    "             xycoords='data', xytext=[30,30], fontsize=16, textcoords='offset points',\n",
    "             arrowprops=dict(arrowstyle='->', connectionstyle='arc3,rad=.2'))\n",
    "\n",
    "ax = plt.gca()\n",
    "ax.spines['right'].set_color('none')\n",
    "ax.spines['top'].set_color('none')\n",
    "ax.xaxis.set_ticks_position('bottom')\n",
    "ax.spines['bottom'].set_position(('data', 0))\n",
    "ax.yaxis.set_ticks_position('left')\n",
    "ax.spines['left'].set_position(('data', 0))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 直方图\n",
    "直方图由竖立在 x 轴上的多个相邻的矩形组成。这些矩形把 x 轴拆分成一段段彼此不重叠的线段（线段两个端点所标识的数据范围也叫面元），矩形的面积跟落在其所对应的面元的元素数量成正比。这种可视化方法常用于样本分布等统计研究。\n",
    "\n",
    "pyplot 用于绘制直方图的函数为<code>hist()</code>，它除了绘制直方图外，还以元组形式返回直方图的计算结果。实际上，<code>hist()</code>函数还可以实现直方图的计算。其能接收一系列样本个体和期望的面元数量作为参数，会把样本范围分为多个区间（面元），然后计算每个面元所包含的样本个体的数量。\n",
    "\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-06-04T09:43:20.353955Z",
     "start_time": "2020-06-04T09:43:19.966928Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "box height: [4 9 9 5 9 1 2 7 0 5 6 7 6 0 3 8 3 5 7 3 3 7 6 0 4 2 3 6 7 4 5 2 8 4 3 0 2\n",
      " 7 0 6 6 6 4 4 1 7 9 6 1 3 3 9 1 3 7 7 3 9 6 8 6 0 7 9 3 6 7 9 1 3 6 2 6 4\n",
      " 9 1 5 2 5 4 0 9 7 4 9 8 4 6 2 7 3 5 9 8 0 4 1 0 6 3]\n",
      "n: [ 9.  7.  7. 14. 11.  7. 15. 13.  5. 12.] \n",
      "bins: [ 0  1  2  3  4  5  6  7  8  9 10] \n",
      "patches: <a list of 10 Patch objects>\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "C:\\Users\\流痕~\\AppData\\Roaming\\Python\\Python37\\site-packages\\matplotlib\\font_manager.py:1241: UserWarning: findfont: Font family ['sans-serif'] not found. Falling back to DejaVu Sans.\n",
      "  (prop.get_family(), self.defaultFamily[fontext]))\n"
     ]
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAYIAAAEKCAYAAAAfGVI8AAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDMuMC4zLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvnQurowAADqFJREFUeJzt3X+MZWV9x/H3BxZTFzVgdrDKsh0wBGu2NphpS6WxDUhDK4J/tM3SYhFoZ9NYAaOhUJPS/tOY1FhM2iobRLaBQBqkEYxSCGKICZDOwsqv1WIQYXF1h6Biac1K/faPe9Fl2GHvwJxz2Pu8X8lm7n3uuff53uxmP/Oc5znPSVUhSWrXQUMXIEkalkEgSY0zCCSpcQaBJDXOIJCkxhkEktQ4g0CSGmcQSFLjDAJJatyaoQuYxLp162p2dnboMiTpgLJt27Ynq2pmf8cdEEEwOzvLwsLC0GVI0gElybcnOc5TQ5LUOINAkhpnEEhS4wwCSWqcQSBJjTMIJKlxBoEkNc4gkKTGGQSS1LgD4spiSS+0+abNg/R7+XsuH6RfdccRgSQ1ziCQpMYZBJLUOINAkhpnEEhS4wwCSWqcQSBJjTMIJKlxBoEkNa6zIEhyZZLdSR7Yx2sfSVJJ1nXVvyRpMl2OCK4CTl3amOQo4BTgsQ77liRNqLMgqKo7gKf28dI/AhcB1VXfkqTJ9TpHkOR04Imq+lqf/UqSltfb7qNJ1gIfBX53wuPngXmADRs2dFiZVstQu2GCO2JKL0efI4I3A0cDX0vyKLAeuCfJL+7r4KraUlVzVTU3MzPTY5mS1JbeRgRVdT9wxHPPx2EwV1VP9lWDJOmFulw+ei1wJ3Bckp1JzuuqL0nSS9fZiKCqztzP67Nd9S1JmpxXFktS4wwCSWqcQSBJjTMIJKlxBoEkNc4gkKTGGQSS1DiDQJIa19sWE5Kmg5sLTh9HBJLUOINAkhpnEEhS4wwCSWqcQSBJjTMIJKlxBoEkNc4gkKTGGQSS1Lgu71l8ZZLdSR7Yq+0fknw9yX1J/j3JYV31L0maTJcjgquAU5e03QpsrKq3Af8FXNJh/5KkCXQWBFV1B/DUkrZbqurZ8dO7gPVd9S9JmsyQcwTnAl8asH9JEgPtPprko8CzwDUvcsw8MA+wYcOGniqTpBea9h1Xex8RJDkbOA34k6qq5Y6rqi1VNVdVczMzM/0VKEmN6XVEkORU4K+A366q/+mzb0nSvnW5fPRa4E7guCQ7k5wH/BPwWuDWJNuTfLqr/iVJk+lsRFBVZ+6j+TNd9SdJemm8sliSGmcQSFLjDAJJapxBIEmNMwgkqXEGgSQ1ziCQpMYZBJLUOINAkho3yO6j0mobanfIPnaGlLrmiECSGmcQSFLjDAJJapxBIEmNMwgkqXEGgSQ1ziCQpMYZBJLUOINAkhrX5c3rr0yyO8kDe7W9PsmtSR4e/zy8q/4lSZPpckRwFXDqkraLgduq6ljgtvFzSdKAOguCqroDeGpJ8xnA1vHjrcB7u+pfkjSZvucI3lBVuwDGP4/ouX9J0hKv2MniJPNJFpIsLC4uDl2OJE2tvoPge0neCDD+uXu5A6tqS1XNVdXczMxMbwVKUmv6DoIbgbPHj88GPt9z/5KkJbpcPnotcCdwXJKdSc4DPgackuRh4JTxc0nSgDq7Q1lVnbnMSyd31ackaeVesZPFkqR+GASS1DiDQJIaZxBIUuMMAklq3ESrhpL8zX4O2V1Vn16FeiRJPZt0+egJwCYgy7y+FTAIJOkANGkQ/F9VPb3ci0lqleqRJPVs0jmC/f1HbxBI0gFq0hHBIUlet8xrAQ5epXpW3eabNg/W9+XvuXywviVpUpMGwV3AhS/y+pdWoRZJ0gBWstfQchPFkqQD2KRB8Bu4akiSppKrhiSpca4akqTGTf2qIUnSi3PVkCQ1zlVDktQ4Vw1JUuMGWTWU5EPAnzGaZL4fOKeqfrySz5AkrY7eVw0lORI4H5irqo2MJpo3Tfp+SdLqGmrV0Brg1Ul+AqwFvrPC90uSVknvq4aq6okkHwceA/4XuKWqbll6XJJ5YB5gw4YNk368JGmFVnKryrzIn8k/JDkcOAM4GngTcGiSs5YeV1VbqmququZmZmZW0oUkaQWGWDX0LuBbVbUIkOQG4B3A1RO+X5K0ioZYNfQYcEKStYxODZ0MLKzg/ZKkVdT7qqGquhu4HriH0dLRg4Atk75fkrS6Blk1VFWXApeu5D2SpG6415AkNc69hiSpce41JEmN8w5lktQ471AmSY3zDmWS1DhXDUlS41w1JEmNc9VQhzbftHnoEtQx/441DVw1JEmNc9WQJDXOVUOS1LjVWDUUXDUkSQcsJ4slqXFOFktS45wslqTGOVksSY1b6WTxcnMEN69OOZKkvk0UBFX1d6vZaZLDgCuAjYxOK51bVXeuZh+SpMmsZK+h1fRJ4Oaq+oMkrwLWDlSHJDWv9yAYzzW8E3g/QFXtAfb0XYckaWTSVUOr6RhgEfhsknuTXJHk0AHqkCQxTBCsAd4OfKqqjgeeAS5eelCS+SQLSRYWFxf7rlGSmjFEEOwEdlbV3ePn1zMKhuepqi1VNVdVczMzM70WKEkt6T0Iquq7wONJjhs3nQw81HcdkqSRoVYNfRC4Zrxi6BHgnIHqkKTmDRIEVbUdmBuib0nS8w0xRyBJegUxCCSpcQaBJDXOIJCkxhkEktQ4g0CSGmcQSFLjDAJJapxBIEmNG2qLCUlasc03bR66hKnkiECSGmcQSFLjDAJJapxBIEmNMwgkqXEGgSQ1ziCQpMYZBJLUOINAkho3WBAkOTjJvUm+MFQNkqRhRwQXADsG7F+SxEBBkGQ98G7giiH6lyT93FAjgsuAi4CfDtS/JGms9yBIchqwu6q27ee4+SQLSRYWFxd7qk6S2jPEiOBE4PQkjwLXAScluXrpQVW1parmqmpuZmam7xolqRm9B0FVXVJV66tqFtgEfLmqzuq7DknSiNcRSFLjBr1DWVV9BfjKkDVIUuscEUhS4wwCSWqcQSBJjTMIJKlxBoEkNc4gkKTGGQSS1DiDQJIaZxBIUuMMAklqnEEgSY0zCCSpcQaBJDXOIJCkxhkEktQ4g0CSGmcQSFLjDAJJapxBIEmN6z0IkhyV5PYkO5I8mOSCvmuQJP3cEDevfxb4cFXdk+S1wLYkt1bVQwPUIknN631EUFW7quqe8eMfATuAI/uuQ5I0MugcQZJZ4Hjg7n28Np9kIcnC4uJi36VJUjMGC4IkrwE+B1xYVU8vfb2qtlTVXFXNzczM9F+gJDVikCBIcgijELimqm4YogZJ0sgQq4YCfAbYUVWf6Lt/SdLzDTEiOBF4H3BSku3jP78/QB2SJAZYPlpVXwXSd7+SpH3zymJJapxBIEmNMwgkqXEGgSQ1ziCQpMYZBJLUOINAkhpnEEhS4wwCSWqcQSBJjTMIJKlxBoEkNc4gkKTGGQSS1DiDQJIaZxBIUuMMAklqnEEgSY0bJAiSnJrkG0m+meTiIWqQJI30HgRJDgb+Gfg94K3AmUne2ncdkqSRIUYEvw58s6oeqao9wHXAGQPUIUlimCA4Enh8r+c7x22SpAGsGaDP7KOtXnBQMg/Mj5/+d5JvvMT+1gFPvsT3Hqj8zm3wOzdgC1teznf+pUkOGiIIdgJH7fV8PfCdpQdV1RZgy8vtLMlCVc293M85kPid2+B3bkMf33mIU0P/CRyb5OgkrwI2ATcOUIckiQFGBFX1bJK/BP4DOBi4sqoe7LsOSdLIEKeGqKovAl/sqbuXfXrpAOR3boPfuQ2df+dUvWCeVpLUELeYkKTGTXUQtLaVRZKjktyeZEeSB5NcMHRNfUhycJJ7k3xh6Fr6kOSwJNcn+fr47/o3h66pa0k+NP43/UCSa5P8wtA1rbYkVybZneSBvdpen+TWJA+Pfx7eRd9TGwSNbmXxLPDhqvpl4ATgAw18Z4ALgB1DF9GjTwI3V9VbgF9lyr97kiOB84G5qtrIaJHJpmGr6sRVwKlL2i4GbquqY4Hbxs9X3dQGAQ1uZVFVu6rqnvHjHzH6D2Kqr9pOsh54N3DF0LX0IcnrgHcCnwGoqj1V9YNhq+rFGuDVSdYAa9nHtUcHuqq6A3hqSfMZwNbx463Ae7voe5qDoOmtLJLMAscDdw9bSecuAy4Cfjp0IT05BlgEPjs+HXZFkkOHLqpLVfUE8HHgMWAX8MOqumXYqnrzhqraBaNf9IAjuuhkmoNgoq0splGS1wCfAy6sqqeHrqcrSU4DdlfVtqFr6dEa4O3Ap6rqeOAZOjpd8EoxPi9+BnA08Cbg0CRnDVvVdJnmIJhoK4tpk+QQRiFwTVXdMHQ9HTsROD3Jo4xO/Z2U5OphS+rcTmBnVT030rueUTBMs3cB36qqxar6CXAD8I6Ba+rL95K8EWD8c3cXnUxzEDS3lUWSMDp3vKOqPjF0PV2rqkuqan1VzTL6+/1yVU31b4pV9V3g8STHjZtOBh4asKQ+PAackGTt+N/4yUz5BPlebgTOHj8+G/h8F50McmVxHxrdyuJE4H3A/Um2j9v+enwlt6bHB4Frxr/gPAKcM3A9naqqu5NcD9zDaGXcvUzhFcZJrgV+B1iXZCdwKfAx4N+SnMcoEP+wk769sliS2jbNp4YkSRMwCCSpcQaBJDXOIJCkxhkEktQ4g0DqQJLZvXeRlF7JpvY6Auk5Sf6W0W6sz46b1gB3LdPGKrVftcIa3w+cC+y9JciuqvrzlXyO9FIYBGrFpud26UxyGHDhMm3LHftS2hm3HcNo24954EFGIfEWRlfHzgIfGB96flVt3+t9l63GF5f2xyCQOjTeCuI64Jyq2p7kI8D3q+ptSTYC21/8E6TuOUcgdWeG0d4wZ+31m/5vMQoGquoB4L6BapN+xiCQuvNDRvfEOHGvtn1tjy4NyiCQurOH0R2l/jTJH4/bvgr8EcD4NqK/MlBt0s84RyB1qKqeGd9A59YkzwD/AmxNch+jXTTvYzRykAZjEEgdqKpHgY3jxz8Afg0gycGM5gx+nOTNjG5I/m2ef/pI6pVBoBbsBv41yXP3NT4IuHmZNlaxfV/WAreP7yQX4C+qak+S7wN/n2TPXsc6kaxeeD8CSWqck8WS1DiDQJIaZxBIUuMMAklqnEEgSY0zCCSpcf8PE2S1jlzx2YAAAAAASUVORK5CYII=\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "import matplotlib as mpl\n",
    "\n",
    "mpl.rcParams['font.sans-serif'] = ['Songti SC']  # SimHei\n",
    "\n",
    "box_weight = np.random.randint(0, 10, 100)  # 生成100个 0-10 的随机数作为样本\n",
    "\n",
    "print('box height:', box_weight)\n",
    "n, bins, patches = plt.hist(box_weight, bins=range(0, 11, 1),\n",
    "                            color='g',\n",
    "                            histtype='bar',\n",
    "                            rwidth=1,\n",
    "                            alpha=0.6)\n",
    "plt.xlabel('箱子重量（kg）')\n",
    "plt.ylabel('销售数量（个）')\n",
    "print('n:', n, '\\nbins:', bins, '\\npatches:', patches)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 条状图\n",
    "\n",
    "跟直方图很相似，但是 $x$ 轴表示的不是数值而是类别。\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-06-04T09:43:17.887969Z",
     "start_time": "2020-06-04T09:43:17.589910Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "([<matplotlib.axis.XTick at 0x2011b884388>,\n",
       "  <matplotlib.axis.XTick at 0x2011b86ca88>,\n",
       "  <matplotlib.axis.XTick at 0x2011b86cb48>,\n",
       "  <matplotlib.axis.XTick at 0x2011b8ad508>,\n",
       "  <matplotlib.axis.XTick at 0x2011b8adcc8>],\n",
       " <a list of 5 Text xticklabel objects>)"
      ]
     },
     "execution_count": 9,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "import matplotlib.pyplot as plt\n",
    "import numpy as np\n",
    "\n",
    "index = np.arange(5)\n",
    "values = [5,7,3,4,6]\n",
    "plt.bar(index, values)\n",
    "plt.xticks(index, ['A', 'B', 'C', 'D', 'E'])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-06-04T10:06:43.043756Z",
     "start_time": "2020-06-04T10:06:43.036862Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Object `plot` not found.\n"
     ]
    }
   ],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.7.4"
  },
  "name": "15_matplotlib.ipynb",
  "toc": {
   "base_numbering": 1,
   "nav_menu": {
    "height": "466.534px",
    "width": "251.989px"
   },
   "number_sections": false,
   "sideBar": true,
   "skip_h1_title": false,
   "title_cell": "Table of Contents",
   "title_sidebar": "Contents",
   "toc_cell": false,
   "toc_position": {},
   "toc_section_display": "block",
   "toc_window_display": false
  }
 },
 "nbformat": 4,
 "nbformat_minor": 4
}
